const { Model, DataTypes } = require('sequelize');
const sequelize = require('../db/db');
const User = require('./User');
const QuestionCategory = require('./QuestionCategory');

class Question extends Model { }

Question.init(
  {
    id: {
      type: DataTypes.CHAR(18),  // 使用 CHAR(18)
      allowNull: false,          // 不允许为空
      primaryKey: true,       // 主键
    },
    content: DataTypes.TEXT,
    options: DataTypes.JSON,
    correct_key: DataTypes.CHAR(1),
    difficulty: DataTypes.TINYINT,
    category_id: DataTypes.CHAR(18),
    status: {
      type: DataTypes.TINYINT,   // 状态，0 表示上架，1 表示下架
      allowNull: false,          // 不允许为空
      defaultValue: 0,           // 初始值是 0
    },
    is_delete: {
      type: DataTypes.TINYINT,   // 是否删除，0 表示未删除，1 表示已删除
      allowNull: false,          // 不允许为空
      defaultValue: 0,           // 初始值是 0
    },
    user_id: DataTypes.CHAR(18),
    create_time: {
      type: DataTypes.DATE,
      allowNull: false,
      defaultValue: DataTypes.NOW,
      comment: '创建时间'
    },
    user_rated_difficulty: {
      type: DataTypes.DECIMAL(3, 1),
      defaultValue: 0.0,
      comment: '用户评价的难度值(1-5)'
    },
    user_rated_quality: {
      type: DataTypes.DECIMAL(3, 1),
      defaultValue: 0.0,
      comment: '用户评价的质量值(1-5)'
    },
    rating_count: {
      type: DataTypes.INTEGER,
      defaultValue: 0,
      comment: '评价人数'
    },
  },
  {
    sequelize,
    modelName: 'Question',
    tableName: 'question', // 表名
    timestamps: false
  }
);

// 建立关联关系
Question.belongsTo(User, {
  foreignKey: 'user_id',
  as: 'creator'
});

Question.belongsTo(QuestionCategory, {
  foreignKey: 'category_id',
  as: 'category'
});

// 关联关系（与QuestionComment）
Question.hasMany(require('./QuestionComment'), {
  foreignKey: 'question_id',
  sourceKey: 'id',
  as: 'comments'
});

module.exports = Question;